package database;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import model.Loja;
import model.Shopping;

public class LojaDAO {
	public static void create(Loja loja)
	{
		Conexao.connect();
		Conexao.update("INSERT INTO loja (cnpj,nome,shopping,tipo) VALUES ('" + loja.getCnpj() + 
				"','" + loja.getNome() + "','" + loja.getShopping() + "','" + loja.getTipo() + "');");
		Conexao.close();
	}
	public static Loja read(String cnpj)
	{
		Loja loja = null;
		String shopping = "";
		Conexao.connect();
		ResultSet resultSet = Conexao.query("SELECT * FROM loja WHERE cnpj='" + cnpj + "';");
		try{
			while(resultSet.next())
			{
				loja = new Loja();
				loja.setCnpj(cnpj);
				loja.setNome(resultSet.getString("nome"));
				shopping = resultSet.getString("shopping");
				loja.setTipo(resultSet.getString("tipo"));
			}
		}
		catch(Exception e)
		{
			System.out.println(e.getMessage());
		}
		Conexao.close();
		loja.setShopping(ShoppingDAO.read(shopping));
		return loja;
	}
	public static void update(Loja loja)
	{
		Conexao.connect();
		Conexao.update("UPDATE loja SET nome='" + loja.getNome() + "',shopping='" + loja.getShopping() + 
				"',tipo='" + loja.getTipo() + "' WHERE cnpj='" + loja.getCnpj() + "';");
		Conexao.close();
	}
	public static void delete(int cnpj)
	{
		Conexao.connect();
		Conexao.update("DELETE FROM loja WHERE cnpj ='" + cnpj + "';");
		Conexao.close();
	}

	public static List<Loja> getAll() throws SQLException {
		List<Loja> lojas = new ArrayList<Loja>();
		List<String> shoppings = new ArrayList<String>();
		String sqlClause = "SELECT * FROM loja";
		ResultSet resultSet = null;

		Conexao.connect();
		resultSet = Conexao.query(sqlClause);
		while(resultSet.next()) {
			Loja loja = new Loja();
			loja.setCnpj(resultSet.getString("cnpj"));
			loja.setNome(resultSet.getString("nome"));
			shoppings.add(resultSet.getString("shopping"));
			loja.setTipo(resultSet.getString("tipo"));
			
			
			lojas.add(loja);
		}
		Conexao.close();
		
		for(int i = 0; i < lojas.size(); i++)
		{
			lojas.get(i).setShopping(ShoppingDAO.read(shoppings.get(i)));
		}
		
		return lojas;
	}
}
